home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / FredFish PD 304.adf / Gears / doargs.c < prev    next >
C/C++ Source or Header  |  1990-01-10  |  3KB  |  145 lines

  1. /*
  2.  *
  3.  *    do_args.c - Argument processing  - WB or CLI
  4.  *
  5.  */
  6.  
  7. #include <exec/types.h>
  8. #include <workbench/workbench.h>
  9. #include <workbench/icon.h>
  10. #include <workbench/startup.h>
  11. #include <stdio.h>
  12.  
  13. #define DIAMETERMAX 1000
  14. #define DIAMETERDEF 27
  15. #define STRINGMAX 100
  16.  
  17. extern struct WBStartup *WBenchMsg;
  18. extern struct Gadget inmm_Gad;
  19. extern char title[];
  20. extern long diameter;
  21. char filename[STRINGMAX];
  22. char title[STRINGMAX];    /* Window title */
  23. char *myname;
  24. void *OpenLibrary();
  25. struct IconBase *IconBase;
  26. long atol();
  27.  
  28. /*
  29.  *  General purpose Workbench argument processing subroutine.
  30.  *  It retrieves arguments from the icon ToolTypes array.
  31.  */
  32.  
  33.  
  34. getWBargs()
  35. {
  36.    struct WBArg *wbArg;
  37.    char   **toolArray;
  38.    char   *string;
  39.    struct DiskObject *diskObj;   
  40.  
  41.    if(IconBase = (struct IconBase *) OpenLibrary("icon.library",0L))
  42.       {
  43.       wbArg = WBenchMsg->sm_ArgList;
  44.       diskObj = (struct DiskObject *)GetDiskObject(wbArg->wa_Name);
  45.       if(diskObj)
  46.          {
  47.          toolArray = diskObj->do_ToolTypes;
  48.          if(string = FindToolType(toolArray,"DIAMETER"))
  49.             {
  50.             diameter = atol(string);
  51.             if (diameter <0 || diameter >DIAMETERMAX) diameter = DIAMETERDEF;
  52.             }
  53.          if(string = FindToolType(toolArray,"TITLE"))
  54.             {
  55.             if (*string != '\0') 
  56.                 {
  57.                 strncpy(title, string,STRINGMAX-1);
  58.                 title[STRINGMAX-1] = '\0';
  59.                 }
  60.             }
  61.          if(string = FindToolType(toolArray,"FILE"))
  62.             {
  63.             if (*string != '\0') 
  64.                 {
  65.                 strncpy(filename, string,STRINGMAX-1);
  66.                 filename[STRINGMAX-1] = '\0';
  67.                 }
  68.             }
  69.          if(string = FindToolType(toolArray,"MM"))
  70.             {
  71.             inmm_Gad.Flags |= SELECTED;
  72.             }
  73.          if(string = FindToolType(toolArray,"INCHES"))
  74.             {
  75.             inmm_Gad.Flags &= ~SELECTED;
  76.             }
  77.          FreeDiskObject(diskObj);
  78.          }
  79.       CloseLibrary(IconBase);
  80.       }
  81. }
  82.  
  83.       
  84. getCLIargs(argc,argv)
  85. int argc;
  86. char *argv[];
  87. {
  88.     register char  *p;
  89.  
  90.     /* get command name */
  91.     myname = (argc-- < 1) ? "skel" : *argv++;
  92.  
  93.     while (argc > 0) 
  94.         {
  95.         argc--;            /* One fewer to process  */
  96.         p = *argv++;    /* Get arg pointer and bump to next */
  97.  
  98.         if (*p != '-')  /* If no '-' it is the filename */
  99.             {
  100.             strncpy(filename, p,STRINGMAX-1);
  101.             filename[STRINGMAX-1] = '\0';
  102.             continue;
  103.             }
  104.  
  105.         p++;
  106.         switch (*p) {
  107.             case 't':        /* Title  */
  108.                 strncpy(title, ++p,STRINGMAX-1);
  109.                 title[sizeof(title)-1] = '\0';
  110.                 break;
  111.             case 'd':        /* wheel diameter in . */
  112.                 diameter = atoi(++p);
  113.                 if (diameter <0 || diameter >DIAMETERMAX) diameter = DIAMETERDEF;
  114.                 break;
  115.             case 'm':
  116.                 inmm_Gad.Flags |= SELECTED;
  117.                 break;
  118.             case 'i':
  119.                 inmm_Gad.Flags &= ~SELECTED;
  120.                 break;
  121.             default:        /* Wrong option  */
  122.             usage();
  123.             done(14);
  124.             }
  125.         }
  126.  
  127. }
  128.  
  129. usage()
  130. {
  131.     fprintf(stderr,"Bicycle Gear Calculator\n");
  132.     fprintf(stderr,"Usage:%s: -d# -i -m filename file\n",myname);
  133.     fprintf(stderr,"-d#   wheel diameter in inches or milimeters\n");
  134.     fprintf(stderr,"-i    inches\n");
  135.     fprintf(stderr,"-m    millimeters\n");
  136.     fprintf(stderr,"filename gearset file to load\n");
  137. }
  138.  
  139. #ifdef AZTEC_C
  140.  
  141. _wb_parse()  /* keep aztec's paws off it */
  142. {
  143. }
  144. #endif
  145.